Nieuw lid |
|
Met php kun je een directory uitlezen, en de array in bijvoorbeeld javascript zetten.
Ik was weer lekker bezig dus heb een hele class als voorbeeld gegeven, die niet alleen een JS array kan maken, maar ook PHP en JSON return kan geven.
<?php
/*
##########################################################
# Serve file list Class v0.1 #
# #
# Filename: getFiles.php #
# #
# Author: Guido Bouman #
# Copyright: Guido Bouman Web Development #
# Date: 24-07-2009 #
# #
# Dependencies: #
# - None #
##########################################################
##########################################################
# TODO: #
# #
# - Nothing #
# #
# NOTES: #
# #
# - None #
##########################################################
##########################################################
# Description: #
# #
# This class takes care of getting a list of files #
# and outputting it in the desired type. #
# JS, PHP, JSON or any other type you can imagine #
##########################################################
*/
class getFiles
{
private static $buffer;
public function JS($dir,$arrayName)
{
self::$buffer = "";
self::$buffer .= "<script type=\"text/javascript\">".PHP_EOL;
self::$buffer .= "var ".$arrayName." = new Array(".PHP_EOL;
$files = self::read($dir,"files");
$keys = array_keys($files);
$last = end($keys);
foreach($files as $key => $val)
{
self::$buffer .= "\"".$val."\"";
if($key !== $last)
{
self::$buffer .= ",";
}
self::$buffer .= PHP_EOL;
}
self::$buffer .= ");".PHP_EOL;
self::$buffer .= "</script>".PHP_EOL;
return self::$buffer;
}
public function PHP($dir)
{
self::$buffer = self::read($dir,"files");
return self::$buffer;
}
public function JSON($dir,$arrayName)
{
self::$buffer = "";
self::$buffer .= "[";
$files = self::read($dir,"files");
$keys = array_keys($files);
$last = end($keys);
foreach($files as $key => $val)
{
self::$buffer .= "\"".$val."\"";
if($key !== $last)
{
self::$buffer .= ",";
}
}
self::$buffer .= "]";
return self::$buffer;
}
private function read($dir,$type = "")
{
$files=array();
$dirs=array();
$uitlees=opendir($dir);
while(($result = readdir($uitlees))!= false)
{
if(is_file($dir."/".$result)){
$files[] = $result;
}elseif(is_dir($dir."/".$result)){
if($result != "." && $result != ".."){
$dirs[] = $result;
}
}
}
closedir($uitlees);
sort($files);
sort($dirs);
if($type == "files"){
return $files;
}elseif($type == "dirs"){
return $dirs;
}elseif($type == "both" || empty($type)){
return array_merge($dirs,$files);
}
}
?>
<?php /* ########################################################## # Serve file list Class v0.1 # # # # Filename: getFiles.php # # # # Author: Guido Bouman # # Copyright: Guido Bouman Web Development # # Date: 24-07-2009 # # # # Dependencies: # # - None # ########################################################## ########################################################## # TODO: # # # # - Nothing # # # # NOTES: # # # # - None # ########################################################## ########################################################## # Description: # # # # This class takes care of getting a list of files # # and outputting it in the desired type. # # JS, PHP, JSON or any other type you can imagine # ########################################################## */ class getFiles { public function JS($dir,$arrayName) { self::$buffer = ""; self::$buffer .= "<script type=\"text/javascript\">".PHP_EOL; self::$buffer .= "var ".$arrayName." = new Array(".PHP_EOL; $files = self::read($dir,"files"); foreach($files as $key => $val) { self::$buffer .= "\"".$val."\""; if($key !== $last) { self::$buffer .= ","; } self::$buffer .= PHP_EOL; } self::$buffer .= ");".PHP_EOL; self::$buffer .= "</script>".PHP_EOL; return self::$buffer; } public function PHP($dir) { self::$buffer = self::read($dir,"files"); return self::$buffer; } public function JSON($dir,$arrayName) { self::$buffer = ""; self::$buffer .= "["; $files = self::read($dir,"files"); foreach($files as $key => $val) { self::$buffer .= "\"".$val."\""; if($key !== $last) { self::$buffer .= ","; } } self::$buffer .= "]"; return self::$buffer; } private function read($dir,$type = "") { while(($result = readdir($uitlees))!= false) { $files[] = $result; }elseif(is_dir($dir."/".$result)){ if($result != "." && $result != ".."){ $dirs[] = $result; } } } if($type == "files"){ return $files; }elseif($type == "dirs"){ return $dirs; }elseif($type == "both" || empty($type)){ } } ?>
Werking:
<?php
include("getFiles.php");
echo getFiles::JS("Je directory","JavaScript Array naam");
?>
<?php include("getFiles.php"); echo getFiles ::JS("Je directory","JavaScript Array naam"); ?>
Dit zal een stukje html echo-en met in script tags een javascript array. De array heeft de naam die je op gaf. Dit kan je dan weer gebruiken in bijvoorbeeld je jQuery.
Mijn methode is niet perfect, het kan nog veel flexibeler opgezet worden. Maar ik probeer hier een beeld te schetsen van de mogelijkheden.
Voor jou kan het natuurlijk nog veel simpeler, maar ik probeer ook meteen een beetje horizon verbreding mee te geven. |